package transacoes;

import utils.*;
import data.*;
import java.util.*;
import utils.Transacao;

public class PacienteOcupaSala {

  public boolean incluir (PacienteOcupaSalaDO paciente_sala) throws Exception{

     // validacao das regras de negocio
     if ( (isEmpty(paciente_sala.getIdPaciente())) || ( isEmpty(paciente_sala.getIdSalas())) ) {
       return false;
     }

     // efetuando a transacao
     Transacao tr = new Transacao();
     try {

       tr.begin();
         PacienteOcupaSalaData cdata = new PacienteOcupaSalaData();
         cdata.incluir(paciente_sala, tr);
       tr.commit();
       return true;
       
     } catch(Exception e) {
         tr.rollback();
         System.out.println("erro ao incluir " + paciente_sala.getIdPaciente());
         e.printStackTrace();
     }
     return false;
  } // incluir
  
  public boolean excluir (PacienteOcupaSalaDO paciente_sala) throws Exception{

     // validacao das regras de negocio
     if ( (isEmpty(paciente_sala.getIdPaciente()))) {
       return false;
     }

     // efetuando a transacao
     Transacao tr = new Transacao();
     try {

       tr.begin();
         PacienteOcupaSalaData pdata = new PacienteOcupaSalaData();
         pdata.excluir(paciente_sala, tr);
       tr.commit();
       return true;
       
     } catch(Exception e) {
         tr.rollback();
         System.out.println("erro ao excluir " + paciente_sala.getIdPaciente());
         e.printStackTrace();
     }
     return false;
  } // excluir

  public boolean atualizar(PacienteOcupaSalaDO paciente_sala) throws Exception {
     Transacao tr = new Transacao();
         try{
           // inserir validacoes de regras de negocio
           tr.begin();
             PacienteOcupaSalaData pdata = new PacienteOcupaSalaData();
             pdata.atualizar(paciente_sala, tr);
           tr.commit();
           return true;
         } catch (Exception e) {
           tr.rollback();
           System.out.println("erro ao atualizar" + paciente_sala.getIdPaciente());
           e.printStackTrace();
         }
         return false;
  } // atualizar

  public PacienteOcupaSalaDO buscar(int idPaciente) throws Exception{
     Transacao tr = new Transacao();
         try{
           tr.beginReadOnly();
             PacienteOcupaSalaData pdata = new PacienteOcupaSalaData();
             PacienteOcupaSalaDO p = pdata.buscar(idPaciente, tr);
           tr.commit();
           return p;
         } catch (Exception e) {
           tr.rollback();
           System.out.println("erro ao buscar" + idPaciente);
           e.printStackTrace();
         }
         return null;
  } // buscar

  private boolean isEmpty(int id) {
     if (0 == id){
       return true;
     }
     else {     
        return false;
     }
  }

//  public static void main(String[] args) {
//      PacienteOcupaSala p = new PacienteOcupaSala();
//      PacienteOcupaSalaDO paciente_sala = new PacienteOcupaSalaDO();
//      try {
//            paciente_sala = p.buscar(2);
//                System.out.println(paciente_sala.getIdPaciente());
//      } catch(Exception e) {
//        e.printStackTrace();
//      } 
// } // main
} // PacienteOcupaSala